import axios from 'axios'
import { ref } from 'vue'

export const token = ref<string | null>(null);

// 将 uni.getStorage 封装成 Promise
const getTokenFromStorage = () => {
  return new Promise((resolve:any, reject:any) => {
    uni.getStorage({
      key: "token",
      success: (res) => {
        token.value = res.data;
        resolve(res.data);
      },
      fail: (err) => {
        reject(err);
      }
    });
  });
};
// 调用封装的函数获取 token
getTokenFromStorage().catch((err) => {
  console.error('获取 token 失败:', err);
});

// 创建axios实例
const request = axios.create({
	baseURL: 'http://8.122.18.118:3000', //基础 URL
	timeout: 5000  // 请求超时时间
})

// 请求拦截器
request.interceptors.request.use(
	config => {
		// 从 token 变量中获取 token
		if (token.value) {
			config.headers["Authorization"] = "Bearer " + token.value;
		}
		return config;
	}, error => {
		// 请求错误处理
		console.log(error)
		return Promise.reject(error);
	}
)

// 响应拦截器
request.interceptors.response.use(
	response => {
		const res = response.data
		if (res.status >= 200 && res.status < 300) {
			return Promise.resolve(res);
		} else {
			return Promise.reject(res);
		}
	},
	error => {
		// 响应错误处理
		console.log(error)
		return Promise.reject(error);
	}
)

export default request;